// i18n.ts - 国际化配置文件
// 这个文件负责设置应用的国际化（i18n）功能，支持多语言切换

// 导入i18next库：核心国际化库，提供翻译功能
import i18n from 'i18next';
// 导入React i18next插件：使i18next与React集成
import { initReactI18next } from 'react-i18next';
// 导入语言检测器：自动检测浏览器的语言设置
import LanguageDetector from 'i18next-browser-languagedetector';

// 导入语言资源文件：JSON文件包含具体语言的翻译内容
import zhCN from './lang/zh-cn.json'; // 中文翻译资源
import en from './lang/en.json';     // 英文翻译资源

// 定义语言资源对象：将导入的JSON资源组织成i18next需要的格式
// resources对象的结构：{ 语言代码: { translation: 翻译对象 } }
const resources = {
  'zh-CN': { // 中文语言代码
    translation: zhCN, // 中文翻译内容
  },
  en: {      // 英文语言代码
    translation: en,   // 英文翻译内容
  },
};

// 配置并初始化i18next
// i18n.use()方法用于添加插件
// .init()方法用于初始化配置
i18n
  .use(LanguageDetector)      // 使用语言检测器插件（自动检测用户语言）
  .use(initReactI18next)      // 使用React集成插件（使i18next在React中工作）
  .init({                     // 初始化i18next配置
    resources,                // 传入上面定义的语言资源
    fallbackLng: 'zh-CN',     // 回退语言：如果检测到的语言不可用，使用中文
    debug: process.env.NODE_ENV === 'development', // 调试模式：在开发环境启用，输出调试信息
    interpolation: {          // 插值配置：处理动态内容
      escapeValue: false,     // 禁用转义：因为React已经处理了XSS防护
    },
    detection: {              // 语言检测配置
      order: ['localStorage', 'navigator'], // 检测顺序：先检查localStorage，再检查浏览器语言
      caches: ['localStorage'], // 缓存位置：将用户选择的语言存储在localStorage中
    },
  });

// 导出配置好的i18n实例
// 其他文件可以导入这个实例来使用翻译功能
export default i18n;